#ifndef TICK_H
#define TICK_H

#ifdef	EXTR				        	//                                                                               
#undef	EXTR                        	// undefine "EXTR"                                                               
#endif
						                                                                                         
#ifdef	TICK_C			    		// redefine "EXTR",make sure EXTR defined according to the constant of "main".   
#define EXTR                                                                                                         
#else						                                                                                         
#define EXTR	extern                                                                                               
#endif 

#define	TIME_ISR_US				(100)       // 定时中断时间(单位：us)
#define TIME_MIN_US				(5000)      // 派生最小时间(单位：us)，根据项目需求而定。建议使用 1ms,2ms,5ms

#define TIME_Min                (0x01)      // 最小时间片
#define TIME_5ms				(TIME_Min)  // 5ms时间片
#define TIME_10ms				(0x02)      // 10ms时间片
#define TIME_100ms				(0x04)      // 100ms时间片
#define TIME_1s					(0x08)      // 1s时间片
#define TIME_1Min				(0x10)      // 5分钟时间片
#define TIME_1H					(0x20)      // 1小时时间片



EXTR void TimeBaseTick_IRQ(void);                   // 时间中断函数， 在定时器中断里面执行
EXTR void TimeProc(void);                           // 时间处理总函数， 在主循环里面执行
EXTR unsigned long GetFreeTimer(void);              // 自由函数，单位us。
EXTR unsigned char GetTimeTick(unsigned char temp); // 时间片获取函数，到时时间输出1，否则为0
EXTR unsigned long GetMaxCycleTime(void);           // 获取最大主循环执行时间
#endif
